﻿using Mt.Site.Application.ContentManagement.Dto;
using Mt.Site.Application.Dto;
using Mt.Site.Core.ContentManagement.Values;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Mt.Site.Application.ContentManagement
{
    public interface IContent2AppService : IBackEndAppService
    {
        Task ResetListApiCacheAsync();

        Task<Dictionary<string, object>> GetContentForEditAsync(GetContent2ForEditInput input);

        Task<PagedContent<Dictionary<string, object>>> GetContentListByPagedAsync(PagedContent2Input input);
  
        Task<Guid> CreateOrUpdateAsync(CreateOrUpdateInput2 input);

        Task<ContentConfig> GetConfigAsync(GetConfigInput input);

        Task<ConfigAndPermisions> GetConfigAndPermisionsAsync(GetConfigInput input);

        Task DeleteAysnc(DeleteInput2 input);

        Task DeleteListAysnc(EntityIdListWithMenuIdDto input);

        Task SetStatusAsync(SetStatusWithMenuIdInput input);

        Task SwapObjectSortAsync(SwapSortNumberWithMenuIdInput input);

        Task SetNewOrderNumberAsync(NewSortNumberWithMenuIdInput input);

        Task MoveToAnotherMenuAsync(ToAnotherMenuInput input);

        Task CopyToOtherMenuAsync(ToAnotherMenuInput input);

        Task ShareToOtherMenuAsync(ToOtherMenusInput input);

        Task<SharedInfoOutput> GetSharedInfoAsync(GetSharedInfoInput input);

        Task<AllMenusForOperation> GetMenusForOperationAsync(GetMenusForOperationInput input);

        Task<AllMenusForOperation> GetAllMenusForTopicOperationAsync(GetAllMenusForTopicOperationInput input);
    }
}
